package com.jdbc.详解;

import com.jdbc.pojo.Account;
import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

//JDBC的快速入门
public class ResultSetDemo {
/**
 * 执行   ResultSet    语句
 * @throws Exception
 */


    @Test
    public void testResultSet() throws Exception {
        //1.注册驱动
//        Class.forName("com.mysql.jdbc.Driver");//可以省略不写

        //2.获取连接
        //如果连接的是本机mysql并且端口号未默认的3306，可以简化写
        String url="jdbc:mysql:///db1";//  jdbc:mysql://     +IP地址（域名）    + 数据库的名称
//        String url="jdbc:mysql://localhost/db1";   //         协议      域名localhost也可以
        String username="root";
        String password="root";
        Connection conn=DriverManager.getConnection(url,username,password);

        //3.定义sql
        String  sql="SELECT * FROM account";

        //4.获取执行sql的对象Statement
        Statement statement= conn.createStatement();

        //5.执行sql
        ResultSet rs=statement.executeQuery(sql);

        //6.处理数据，比哪里rs中的所有数据
        //6.1 光标先向下移动一行，并且判断当前行是否有数据
//        while (rs.next()){
//            //6-2 获取数据
//            int id=rs.getInt(1);
//            String name=rs.getString(2);
//            double money=rs.getDouble(3);
//
//            System.out.println(id);
//            System.out.println(name);
//            System.out.println(money);
//
//            System.out.println("--------------------");
//
//        }

        while (rs.next()){
            //6-2 获取数据
            int id=rs.getInt("id");
            String name=rs.getString("name");
            double money=rs.getDouble("money");

            System.out.println(id);
            System.out.println(name);
            System.out.println(money);

            System.out.println("--------------------");

        }
        //7.释放资源
        rs.close();
        statement.close();
        conn.close();
    }





    /**
     * 要求：查询account账户表数据，封装到Account对象中，并且存储到ArrayList集合中
     * 1.定义实体类Account
     * 2.查询数据，封装到Account对象中
     * 3.将Account对象存入ArrayList集合中
     */


    @Test
    public void testResultSet2() throws Exception {
        //1.注册驱动
//        Class.forName("com.mysql.jdbc.Driver");//可以省略不写

        //2.获取连接
        //如果连接的是本机mysql并且端口号未默认的3306，可以简化写
        String url="jdbc:mysql:///db1";//  jdbc:mysql://     +IP地址（域名）    + 数据库的名称
//        String url="jdbc:mysql://localhost/db1";   //         协议      域名localhost也可以
        String username="root";
        String password="root";
        Connection conn=DriverManager.getConnection(url,username,password);

        //3.定义sql
        String  sql="SELECT * FROM account";

        //4.获取执行sql的对象Statement
        Statement statement= conn.createStatement();

        //5.执行sql
        ResultSet rs=statement.executeQuery(sql);

        //创建集合
        List<Account> list=new ArrayList<>();

        //6.处理数据，比哪里rs中的所有数据
        //6.1 光标先向下移动一行，并且判断当前行是否有数据
        while (rs.next()){
            Account account=new Account();
            //6-2 获取数据
            int id=rs.getInt("id");
            String name=rs.getString("name");
            double money=rs.getDouble("money");

            //赋值
            account.setId(id);
            account.setName(name);
            account.setMoney(money);

            //存入集合
            list.add(account);

        }
        System.out.println(list);

        //7.释放资源
        rs.close();
        statement.close();
        conn.close();
    }
}
